﻿/*  Eleven Business Suite : Un ERP básico para pequeños empresarios.
 *  Copyright (C) 2011  Francis Bolaños Arias
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>;.
 */

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ElevenCore;
using ElevenGlobal;

namespace ElevenGUI
{
    public partial class FrmPrecioVenta : Form
    {

        private DataTable dtPreciosVenta;

        private GLOBuscador buscador;

        public FrmPrecioVenta()
        {
            InitializeComponent();
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            txtPrecioVenta.ReadOnly = false;
            btnNuevo.Enabled = false;
            btnGuardar.Enabled = true;
            btnEliminar.Enabled = false;
            btnCancelar.Enabled = true;
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            txtPrecioVenta.ReadOnly = true;
            btnNuevo.Enabled = true;
            btnGuardar.Enabled = false;
            btnEliminar.Enabled = true;
            btnCancelar.Enabled = false;
        }

        private void cargarListaPreciosVenta() {
            try
            {
                lstPrecioVenta.DataSource = new DataTable();
                dtPreciosVenta = SCMPrecioVenta.consultar(int.Parse(txtID.Text));
                lstPrecioVenta.DataSource = dtPreciosVenta;
                lstPrecioVenta.DisplayMember = "PrecioVentaFecha";
                lstPrecioVenta.ValueMember = "IdPrecioVenta";
            }
            catch (FormatException) { }
        }

        private void cargarHistorialPrecioCosto() {
            try
            {
                lstPrecioCosto.DataSource = new DataTable();
                DataTable dt = SCMDTOrdenCompra.consultarDTOrdenCompraPrecioCosto(int.Parse(txtID.Text));
                lstPrecioCosto.DataSource = dt;
                lstPrecioCosto.DisplayMember = "PrecioCosto";
            }
            catch (FormatException) { }
            catch (SqlException se) {
                GLOMensajeError error = new GLOMensajeError("Error grave al conectar con la base de datos.", "Este error puede deberse a que se haya perdido la conexión con la base de datos o ocurriera un error en el sistema.\n\n Mensaje técnico del error: " + se.Message, "SqlException");
                error.ShowDialog();
            }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                SCMPrecioVenta precio = new SCMPrecioVenta(0, int.Parse(txtID.Text), double.Parse(txtPrecioVenta.Text.Replace(".", ",")));
                if (precio.insertar())
                {
                    GLOMensajeAceptar mensaje = new GLOMensajeAceptar("Se ha insertado el nuevo precio de venta");
                    mensaje.ShowDialog();
                    cargarListaPreciosVenta();
                }
                else
                {
                    GLOMensajeError error = new GLOMensajeError("Error grave al conectar con la base de datos.", "Este error puede deberse a que se haya perdido la conexión con la base de datos o ocurriera un error en el sistema.\n\n Mensaje técnico del error: " + Cache.ErrorActual, "SqlException");
                    error.ShowDialog();
                }
            }
            catch (FormatException fe)
            {
                GLOMensajeError error = new GLOMensajeError("Error de validación.", "Este error puede deberse a que no ha elegido un producto (con el botón de binoculares). Mensaje técnico del error: " + fe.Message, "FormatException");
                error.ShowDialog();
            }
            catch (NullReferenceException ne) {
                GLOMensajeError error = new GLOMensajeError("Error de validación", "No ha escogido producto.\n\n Mensaje técnico del error: " + ne.Message, "NullReferenceException");
                error.ShowDialog();
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            try
            {
                SCMPrecioVenta precio = new SCMPrecioVenta(int.Parse(lstPrecioVenta.SelectedValue.ToString()), 0, 0.0);
                if (precio.eliminar())
                {
                    GLOMensajeAceptar mensaje = new GLOMensajeAceptar("Se eliminó el precio de venta");
                    mensaje.ShowDialog();
                    cargarListaPreciosVenta();
                }
                else
                {
                    GLOMensajeError error = new GLOMensajeError("Error grave al conectar con la base de datos.", "Este error puede deberse a que se haya perdido la conexión con la base de datos o ocurriera un error en el sistema.\n\n Mensaje técnico del error: " + Cache.ErrorActual, "SqlException");
                    error.ShowDialog();
                }
            }
            catch (NullReferenceException ne) {
                GLOMensajeError error = new GLOMensajeError("Error de validación", "Debe elegir un precio de la lista a la izquierda para eliminarlo.\n\n Mensaje técnico del error: " + ne.Message, "NullReferenceException");
                error.ShowDialog();
            }
        }

        private void btnBuscarProd_Click(object sender, EventArgs e)
        {
            buscador = new GLOBuscador();
            buscador.Entidad = (int)GLOBuscador.Entidades.PrecProd;
            buscador.FormClosed += new FormClosedEventHandler(buscadorProd_Closed);
            buscador.ShowDialog();
        }

        private void buscadorProd_Closed(object sender, FormClosedEventArgs e)
        {
            try
            {
                txtID.Text = Cache.pvenproducto.Cells[0].Value.ToString();
                lblNombreProducto.Text = Cache.pvenproducto.Cells[2].Value.ToString();
                txtCantidad.Text = Cache.pvenproducto.Cells[6].Value.ToString();
                cargarListaPreciosVenta();         
            }
            catch (NullReferenceException) { }
        }

    }
}
